﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Intelligent.OTC.Domain.DataModel;
using Intelligent.OTC.Domain.Repositories;
using Intelligent.OTC.Common.UnitOfWork;
using Intelligent.OTC.Common;

namespace Intelligent.OTC.Business
{
    public interface ISoaService
    {
        IEnumerable<SoaDto> GetSoaList(string invoiceState = "", string invoiceTrackState = "", string legalEntity = "", string invoiceNum = "", string soNum = "", string poNum = "", string invoiceMemo = "");
        IEnumerable<SoaDto> GetNoPaging(string ListType);
        void SaveComm(int invid, string comm);
        void BatchSaveComm(string invids, string comm);
        void BatchSoa(string Cusnums);
        //IEnumerable<CollectorSoa> GetAllCollectorAlert();
        IEnumerable<SendSoaHead> CreateSoa(string ColSoa, string Type);
        CollectorAlert GetSoa(string TaskNo);
        CollectorAlert GetStatus(string ReferenceNo);
        IEnumerable<InvoiceLog> GetInvLog(string InvNum);
        int GetPStatus(string referenceNo, string status);
        void Wfchange(string processDefinationId, string referenceNo, string type);
        void UpdateAlert(string[] cusnums, string TaskId, string ProcessId,string causeObjectNum, string status, int type);
     //   IEnumerable<Contactor> GetSoaContact(string CustNumFCon);
        IEnumerable<CustomerPaymentBank> GetSoaPayment(string CustNumFPb);
        IEnumerable<CustomerPaymentCircle> GetSoaPaymentCircle(string CustNumFPc);
        IEnumerable<ContactorDomain> GetSoaContactDomain(string CustNumFPd);
        IEnumerable<ContactHistory> GetContactHistory(string CustNumsFCH);
        int sendSoaSaveInfoToDB(MailTmp mailInstance);
        MailTmp GetNewMailInstance(string customerNums, List<int> intIds, int templateId = 0);
        void SaveNotes(string Cus, string SpNotes);
        IEnumerable<PeriodControl> GetAllPeriod();
        IEnumerable<SoaDto> SelectChangePeriod(int PeriodId);
        int CheckPermission(string ColSoa);
    }
}
